In the past, dedicated embedded controls called CNCs (computer numerical controls) have been used to control physical machinery of various types, such as machine tools, punch equipment, and the like. Common features of these physical machines require the ability of the CNC to read various switches, and drive various physical machine actuators, as well as to control the speeds and positions of various motors, etc. CNC units have been designed with one or more processors that have been controlled by executive software dedicated to the required physical machine functions.
While this technique has proven satisfactory, it lacks flexibility, because the specific hardware of a machine system is closely coupled with the CNC program, so that the program is not readily adaptable for use on machines of different physical characteristics, and a change in the physical characteristic of a machine requires program modifications which may be extensive. Such program modifications may result in unanticipated side effects, as a result of the program complexity, and, therefore, program modification typically requires an extensive period of testing to be sure that no unwanted side effects or "bugs" are produced as a result of the modifications.
It is therefore desirable to provide a control system by which machine operations may be programmed in a way which is readily adaptable, to allow using an easily modified and intuitive program on different machines, and which can readily accommodate changes in the physical characteristics of machines with which the programs are used.